package com.ceo.common.config;

import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;

import java.lang.reflect.Field;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author uto_dev_008
 * @desc
 * @since 2023/6/2 16:24
 * Copyright (c)  All rights reserved
 */
public class Swagger2Configuration extends WebMvcConfigurationSupport {

//
//    @Override
//
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//
//        registry.addResourceHandler("/**").addResourceLocations(
//
//                "classpath:/static/");
//
//        registry.addResourceHandler("swagger-ui.html", "doc.html").addResourceLocations(
//
//                "classpath:/META-INF/resources/");
//
//        registry.addResourceHandler("/webjars/**").addResourceLocations(
//
//                "classpath:/META-INF/resources/webjars/");
//
//        super.addResourceHandlers(registry);
//
//    }
//
//    @Bean
//
//    public static Bean PostProcessorspringfoxHandlerProviderBeanPostProcessor() {
//
//        return new BeanPostProcessor() {
//
//            @Override
//            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
//
//                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxAutoConfiguration) {
//
//                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
//
//                }
//
//                return bean;
//
//            }
//
//            private void customizeSpringfoxHandlerMappings(List<T> mappings) {
//
//                List copy = mappings.stream()
//
//                            .filter(mapping -> mapping.getPatternParser() == null)
//
//                        .collect(Collectors.toList());
//
//                mappings.clear();
//
//                mappings.addAll(copy);
//
//            }
//
//            @SuppressWarnings("unchecked")
//
//            private List getHandlerMappings(Object bean) {
//
//                try {
//
//                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
//
//                    field.setAccessible(true);
//
//                    return (List) field.get(bean);
//
//                } catch (IllegalArgumentException | IllegalAccessException e) {
//
//                    throw new IllegalStateException(e);
//
//                }
//
//            }
//
//        };
//    }
}
